package org.fhnw.aigs.server.gui;
import java.util.logging.Level;
import java.util.logging.LogRecord;
import javax.swing.JTextArea;
import javax.swing.SwingUtilities;
/**
* Custom logger for JTextArea. Slightly modified. See
* http://stackoverflow.com/questions/10785560/write-logger-message-to-file-and-textarea-while-maintaining-default-behaviour-in
*
* @author Matthias Stöckli, Edwin Dalorzo
* @version v1.0
*/
public class LoggerTextAreaHandler extends java.util.logging.Handler {
public LoggerTextAreaHandler(final JTextArea textArea) {
setLevel(Level.ALL);
this.textArea = textArea;
}
private JTextArea textArea;
@Override
public void publish(final LogRecord record) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
String text = textArea.getText();
text = (textArea.getText());
String output = record.getMessage();
// Delete the following parts:
// <?xml version="1.0" encoding="UTF-8"?>
// xmlns:aigs="https://ol19ns11008.fhnw.ch/
// This information is not really needed.
if (record.getParameters() != null) {
for (int i = 0; i < record.getParameters().length; i++) {
output = output.replace("{" + i + "}", record.getParameters()[i].toString());
}
}
// Remove other bloaty xml elements.
output = output.replace("<?xml version=\"1.0\" encoding=\"UTF-8\"?>", "");
output = output.replace("xmlns:aigs=\"https://ol19ns11008.fhnw.ch/", "");
text = text + output + "\n";
textArea.setText(text);
}
});
}
public JTextArea getTextArea() {
return this.textArea;
}
@Override
public void flush() {
}
@Override
public void close() throws SecurityException {
}
}